package com.thesis.manage.service;

import com.thesis.manage.common.mongodb.MongoService;
import com.thesis.manage.domain.DocumentInfo;
import com.thesis.manage.domain.Teacher;
import com.thesis.manage.service.module.bean.TaskBook;
import com.thesis.manage.service.module.bean.ThesisInfo;
import com.thesis.manage.service.module.vo.DocumentVO;

import java.util.List;

/**
 * @author php
 * @date 2018/3/19
 * 文档信息类
 */
public interface DocumentInfoService extends MongoService<DocumentInfo> {
    /**
     * 通过学生id和文档类型查询
     *
     * @param studentId 学生id
     * @param type      文档类型
     * @return documentInfo3
     */
    DocumentInfo findByStudentId(Long studentId, Integer type);

    /**
     * 保存任务书
     *
     * @param studentId 学生id
     * @param name      教师名
     * @param id        教师id
     * @param taskBook  任务书
     * @param taskId    任务书id
     */
    void saveTaskBook(Long studentId, String name, Long id, TaskBook taskBook, Long taskId);

    /**
     * 保存文档
     *
     * @param string    文档对象json字符串
     * @param type      文档类型
     * @param studentId 学生id
     */
    void saveDocument(String string, Integer type, Long studentId);

    /**
     * 查询文档（学生id）
     *
     * @param studentId id
     * @param type      类型
     */
    List<DocumentInfo> findOpenReportByStudentId(Long studentId, Integer type);

    /**
     * 审核文档
     *
     * @param oldReport   原文档
     * @param newReport   审核内容文档
     * @param status      通过 ，不通过
     * @param id          原文档id
     * @param teacherId   审核人id
     * @param teacherName 审核人名称
     */
    void reviewDocument(String oldReport, String newReport, Integer status, Long id, Long teacherId, String teacherName);

    /**
     * 查看旧的文档列表
     *
     * @param studentId 学生id
     * @param type      文档类型
     */
    List<DocumentVO> findOldDocumentByStudentId(Long studentId, Integer type);

    /**
     * 查询旧的文档
     *
     * @param id   文档id
     * @param type 类型
     * @return list
     */
    List<DocumentInfo> findOldDocumentById(Long id, Integer type);

    /**
     * 查询论文相关信息
     *
     * @param id 学生id
     * @return list
     */
    List<ThesisInfo> findThesisInfos(Long id);

    /**
     * 审核论文
     *
     * @param id      论文id
     * @param id1     教师id
     * @param name    审核人名
     * @param status  通过，不通过
     * @param message 审核消息
     */
    void reviewThesisInfo(Long id, Long id1, String name, Integer status, String message);

    /**
     * 查看答辩信息
     *
     * @param collegeName 院系名
     * @return documentInfo
     */
    DocumentInfo findDefenceArrange(String collegeName);

    /**
     * 上传答辩安排
     *
     * @param teacher 教师
     * @param url     url地址
     */
    void saveDefenceArrange(Teacher teacher, String url);


}
